package com.cupk.mapper;

import com.cupk.dto.OrderDto;
import com.cupk.dto.ProviderDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 名称OrderMapper
 * 描述 OrderMapper
 *
 * @version 1.0
 * @author:XiongRuiKai
 * @datatime:2023-06-12 12:13
 */
@Mapper
public interface OrderMapper {
    /**
     * 有X条计划正在实施的订单分页查询
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param page 页码
     * @param pageSize 每页返回的数据条目数
     * @return
     */
    List<OrderDto> getOrderPage(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime,
            @Param("page") int page,
            @Param("pageSize") int pageSize
    );

    /**
     * 有X条计划正在实施的订单分页查询
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @return
     */
    int getOrderCount(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime
    );

    /**
     * 计划采购订单分页查询
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param page 页码
     * @param pageSize 每页返回的数据条目数
     * @return
     */
    List<OrderDto> getOrderPlanPage(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime,
            @Param("page") int page,
            @Param("pageSize") int pageSize
    );

    /**
     * 计划采购订单分页查询的记录数
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @return
     */
    int getOrderPlanCount(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime
    );

    /**
     * 实施采购订单分页查询
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param page 页码
     * @param pageSize 每页返回的数据条目数
     * @return
     */
    List<OrderDto> getOrderExecutePage(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime,
            @Param("page") int page,
            @Param("pageSize") int pageSize
    );

    /**
     * 实施采购订单分页查询的记录数
     * @param orderId 父订单编号
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @return
     */
    int getOrderExecuteCount(
            @Param("orderId") String orderId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime
    );
}
